package com.xuecheng.api.course;

import com.xuecheng.framework.domain.cms.response.QueryResponseResult;
import com.xuecheng.framework.domain.course.*;
import com.xuecheng.framework.domain.course.ext.CourseView;
import com.xuecheng.framework.domain.course.ext.TeachplanNode;
import com.xuecheng.framework.domain.course.request.CourseListRequest;
import com.xuecheng.framework.domain.course.response.AddCourseResult;
import com.xuecheng.framework.domain.course.response.CoursePreviewResult;
import com.xuecheng.framework.domain.course.response.CoursePublishResult;
import com.xuecheng.framework.model.response.ResponseResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;

import java.util.List;

@Api(value="课程管理接口",description = "课程管理接口，提供课程的增，删，改，查")
public interface CourseControllerApi {

    @ApiOperation("根据课程id查询教学计划列表")
    public TeachplanNode findTeachplanList(String courseId);

    @ApiOperation("添加课程计划")
    public ResponseResult addTeachplan(Teachplan teachplan);

    @ApiOperation("查询我的课程列表")
    public QueryResponseResult findCourseList(int page, int size, CourseListRequest courseListRequest);

    @ApiOperation("添加课程基本信息")
    public AddCourseResult addCourseBase(CourseBase courseBase);

    @ApiOperation("根据课程id获取课程基础信息")
    public CourseBase getCourseBaseById(String courseId);

    @ApiOperation("更新课程基础信息")
    public ResponseResult updateCourseBase(CourseBase courseBase);

    @ApiOperation("获取课程营销信息")
    public CourseMarket getCourseMarketById(String courseId);

    @ApiOperation("更新课程营销信息")
    public ResponseResult updateCourseMarket(CourseMarket courseMarket);

    @ApiOperation("添加课程图片")
    public ResponseResult addCoursePic(String courseId,String pic);

    @ApiOperation("获取课程图片")
    public CoursePic getCoursePic(String courseId);

    @ApiOperation("删除课程图片")
    public ResponseResult deleteCoursePic(String courseId);

    @ApiOperation("课程视图查询")
    public CourseView findCourseView(String id);

    @ApiOperation("预览课程")
    public CoursePreviewResult preview(String id);

    @ApiOperation("发布课程")
    public CoursePublishResult publish(String id);

    @ApiOperation("查询课程信息列表")
    public List<CoursePub> findCoursePubList();

    @ApiOperation("保存课程计划的媒资信息")
    public ResponseResult saveTeachplanMedia(TeachplanMedia teachplanMedia);

    @ApiOperation("获取所有课程计划的媒资信息")
    public List<TeachplanMedia> findTeachplanMedias();
}
